#ifndef CELL_H
#define CELL_H

#include <QObject>
#include <QGraphicsObject>
#include "defines.h"

/*!
 * \brief Класс Cell простейший элемент отображения.
 *  Его потомки будут храниться по указателю на предка
 */
class Cell : public QGraphicsObject
{
    Q_OBJECT
public:
    /*!
     * \brief Cell - конструктор
     * \param parent - указатель на родителя (нужен для правильного
     * освобождения памяти)
     */
    Cell(Point pos = Point(0, 0), QGraphicsObject *parent = 0);
    /*!
     * \brief setPos - установка позиции ячейки
     */
    void setPos(Point pos) {m_pos = pos;}
    /*!
     * \brief setX - установка Х координаты ячейки
     */
    void setX(quint32 newX) {m_pos.first = newX;}
    /*!
     * \brief setY - установка Y координаты ячейки
     */
    void setY(quint32 newY) {m_pos.second = newY;}
    /*!
     * \brief setColor Установка цвета ячейки
     */
    void setColor(CellColor color) {m_color = color;}

    /*!
     * \brief color - геттер цвета ячейки
     */
    CellColor color() const {return m_color;}
    /*!
     * \brief position - геттер позиции ячейки
     */
    Point position() const {return m_pos;}
    /*!
     * \brief xPos - геттер Х координаты ячейки
     */
    quint32 xPos() const {return m_pos.first;}
    /*!
     * \brief yPos - геттер Y координаты ячейки
     */
    quint32 yPos() const {return m_pos.second;}
private:
    /*!
     * \brief m_color - цвет ячейки
     */
    CellColor m_color;
    /*!
     * \brief m_pos - позиция ячейки
     */
    Point m_pos;
signals:
    
public slots:
protected:
    /*!
     * \brief paint - метод рисования, будет автоматически вызываться,
     * когда потребуется
     */
    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
    /*!
     * \brief boundingRect - метод, возвращающий ограничивающий прямоугольник ячейки.
     * Нужен для отрисовки
     */
    QRectF boundingRect() const;
    Q_INTERFACES(QGraphicsItem)
};

#endif // CELL_H
